/*
  滴滴<果园>任务
  
  已知问题：

  Q：只有浇水施肥，没有做任务
  A：水平有限，在没有识图点击的情况下，只能做到这个程度了
  
  待更新功能：
  做任务（大概）

  20211014 V1.6
  调整日志内容
  20211015 V1.7
  调整极速浇水模式下的补充肥料判断条件
  浇水间隔加长，避免极速浇水模式下次数不准
  20211024 V1.8
  增加弹窗关闭判断
  增加宝箱位置参数
  20211025 V1.9
  修改文本错别字
  跳转弹窗关闭判断
*/
start();

threads.start(function () {
  var beginBtn1;
  var beginBtn2;
  for(;;){
    if (beginBtn1 = id("popClose").findOne()) {
      sleep(1000);
      beginBtn1.click();
    }
    if (beginBtn2 = text("跳过").findOne()) {
      sleep(1000);
      beginBtn2.click();
    }
  }
});

console.info("开始任务");
/*参数名称
  APP名称 LauchAPPName
  浇水坐标模式 WaterModel （1：普通浇水；2：极速浇水）
  浇水次数 WaterTimes
  收宝箱次数 TreasureTimes
  宝箱位置 TreasureSite （调整幅度：440-940）
  模式设置 ModelSet （0：浇水和收宝箱；1：只浇水；2：只收宝箱）
  是否使用肥料 Manure （0：不使用肥料；1：使用肥料）
  是否补充肥料 Addmanure （0：不补充肥料；1：补充肥料）
*/
  doTask("滴滴出行",2,100,5,850,0,0,0);
  home();
  sleep(3000);
  doTask("滴滴出行分身",2,50,3,850,0,0,0);

console.info("结束任务");
  home();
  sleep(1000);

console.log("已退出脚本"); 
engines.myEngine().forceStop()

function start() {
  auto.waitFor();//获取无障碍服务权限
  console.show();//开启悬浮窗
  console.info("滴滴<果园>任务");
}

//APP名称 LauchAPPName
//浇水坐标模式 WaterModel （1：普通浇水；2：极速浇水）
//浇水次数 WaterTimes
//收宝箱次数 TreasureTimes
//宝箱位置 TreasureSite （调整幅度：440-940）
//模式设置 ModelSet （0：浇水和收宝箱；1：只浇水；2：只收宝箱）
//是否使用肥料 Manure （0：不使用肥料；1：使用肥料）
//是否补充肥料 Addmanure （0：不补充肥料；1：补充肥料）
function doTask(LauchAPPName,WaterModel,WaterTimes,TreasureTimes,TreasureSite,ModelSet,Manure,Addmanure) {
  setScreenMetrics(1440, 3120);//声明是基于分辨率1440，3120的点击
  var launchResult = app.launchApp(LauchAPPName);
    if (!launchResult) {
      toast("你还没有安装"+LauchAPPName+"！");
      sleep(1000)
      return;
    }
  console.log("打开"+LauchAPPName+"");
  for(var i = 0; textContains("种水果").findOnce() == null; i++) {
    if(textContains("果园").findOnce() == null){
      toast("当前界面未找到果园入口，请手动切换至<滴滴>首页");
      sleep(3000);
    }
    if(textContains("果园").exists()){
      break;
    }
    if(i >= 10){
      console.log("超时，即将退出脚本"); 
      exit();
    }
  }
  console.info("发现<果园>入口，准备进入");
  sleep(500);
  var boundsX = 0
  var boundsY = 0
  if(textContains("种水果").exists()){
    boundsX = textContains("种水果").findOne().bounds().centerX();
    boundsY = textContains("种水果").findOne().bounds().centerY();
  }
  else if(textContains("果园").exists()){
    boundsX = textContains("果园").findOne().bounds().centerX();
    boundsY = textContains("果园").findOne().bounds().centerY();
  }
  click(boundsX,boundsY);
  console.log("等待进入果园");
  //坐标设置
  if(WaterModel==1){
    var WaterX=1200   //浇水一次
    var WaterY=2800
  }
  else if(WaterModel==2){
    var WaterX=1300   //浇水十次
    var WaterY=2500
  }
  else{
    console.error("浇水模式设置有误，请检查设置");
    return;
  }
  var TreasureBoxX=TreasureSite   //宝箱坐标（会跟随进度条左右移动，可能需要微调，调整幅度在440-940）
  var TreasureBoxY=2200
  //提示信息
  var WaterModel_info=""
  var ModelSet_info=""
  var Manure_info=""
  var Addmanure_info=""
  //浇水模式信息
  if(WaterModel==1){
    WaterModel_info="普通浇水"
  }
  else if(WaterModel==2){
    WaterModel_info="极速浇水"
  }
  else{
    WaterModel_info="无效模式"
  }
  //执行模式信息
  if(ModelSet==0){
    ModelSet_info="浇水和收宝箱"
  }
  else if(ModelSet==1){
    ModelSet_info="只浇水"
  }
  else if(ModelSet==2){
    ModelSet_info="只收宝箱"
  }
  else{
    ModelSet_info="无效模式"
  }
  //使用肥料信息
  if(Manure==0){
    Manure_info="不使用肥料"
  }
  else if(Manure==1){
    Manure_info="使用肥料"
  }
  else{
    Manure_info="无效模式"
  }
  //补充肥料信息
  if(Addmanure==0){
    Addmanure_info="不补充肥料"
  }
  else if(Addmanure==1){
    Addmanure_info="补充肥料"
  }
  else{
    Addmanure_info="无效模式"
  }
  console.info(
  "当前设置"+"\n"+
  "<浇水次数>：["+WaterTimes+"]次"+"\n"+
  "<收宝箱次数>：["+TreasureTimes+"]次"+"\n"+
  "<宝箱位置>：["+TreasureSite+"]"+"\n"+
  "<浇水模式>：["+WaterModel_info+"]"+"\n"+
  "执行模式：["+ModelSet_info+"]"+"\n"+
  "使用肥料模式：["+Manure_info+"]"+"\n"+
  "补充肥料模式：["+Addmanure_info+"]");
  sleep(5000);
  //每次浇水消耗约4点肥力，可根据循环次数进行施肥，最大使用次数不超过15次即可
  if(Manure==1){
    console.info("开始使用肥料");
    //默认施肥10次
    for(var t=1; t<=10;t=++t){
      sleep(500);
      click(200,2800);//领肥料
      console.log("第"+t+"次施肥");
      sleep(1000);
      click(1170,1939);//使用肥料
      sleep(2000);
    }
    console.info("使用肥料已达设置上限");
  }
  /*按设置次数循环*/
  //根据浇水模式转换为相应点击次数
  if(WaterModel==1){
    WaterTimes=WaterTimes;
  }
  else if(WaterModel==2){
    WaterTimes=WaterTimes/10
  }
  if(ModelSet==0 | ModelSet==1){
    console.info("开始浇水");
    for(var t=1; t<=WaterTimes;t=++t){
      sleep(500);
      click(WaterX,WaterY);//点击浇水
      console.log("第"+t+"次浇水");
      sleep(3000);
      //普通浇水模式：每浇水50次，且剩余浇水次数大于50，补充8次肥料
      //极速浇水模式：每浇水5次，且剩余浇水次数大于5，补充8次肥料
      if((Addmanure==1 && (t/50)%1 === 0 && t+50<WaterTimes && WaterModel==1)
        |(Addmanure==1 && (t/5)%1 === 0 && t+50<WaterTimes*10 && WaterModel==2)){
        console.info("开始补充肥料");
        for(var t1=1; t1<=8;t1=++t1){
          sleep(500);
          click(200,2800);//领肥料
          console.log("第"+t1+"次施肥");
          sleep(1000);
          click(1170,1939);//使用肥料
          sleep(2000);
        }
        console.info("补充肥料完成");
      }
    }
    console.info("浇水已达设置上限");
  }
  if(ModelSet==0 |ModelSet==2){
    console.info("开始收取浇水宝箱");
    for(var t=1; t<=TreasureTimes;t=++t){
      sleep(500);
      click(TreasureBoxX,TreasureBoxY);//点击浇水宝箱
      console.log("第"+t+"次收取宝箱");
      sleep(1000);
      click(TreasureBoxX,TreasureBoxY);
      sleep(500);
    }
    console.info("宝箱收取已达设置上限");
  }
}